package cn.kmia.hrm.service.basicData;

import cn.kmia.hrm.pojo.PostAreaInfo;
import cn.kmia.hrm.service.BaseService;
import cn.kmia.hrm.util.CommonSet;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.QueryResult;
import org.nutz.dao.pager.Pager;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.nutz.log.Log;
import org.nutz.log.Logs;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * @program: hrm
 * @description: 岗位所在区域服务
 * @author: 4K
 * @create: 2018-07-19 16:20
 **/
@IocBean
public class PostAreaInfoService extends BaseService {

    private static final Log log = Logs.get();

    /**
     * 分页查询
     *
     * @param name
     * @param pager
     * @return
     */
    public QueryResult queryByPage(String name, Pager pager) {
        Cnd cnd = Cnd.where("1", "=", 1);
        if (!Strings.isBlank(name) && !"null".equals(name)) {
            cnd.and("post_area_name", "like", "%" + name + "%");
        }
        cnd.and("delFlag", "is", null);
        List<PostAreaInfo> list = dao.query(PostAreaInfo.class, cnd, pager);
        QueryResult qr = new QueryResult();
        qr.setList(list);
        pager.setRecordCount(dao.count(PostAreaInfo.class, cnd));
        qr.setPager(pager);
        return qr;
    }

    /**
     * 查询
     *
     * @return
     */
    public List<PostAreaInfo> query() {
        return dao.query(PostAreaInfo.class, Cnd.where("delFlag", "is", null));
    }

    /**
     * 新增
     *
     * @param postAreaInfo   对象信息
     * @param user_idcard 操作人
     * @return
     */
    public PostAreaInfo add(PostAreaInfo postAreaInfo, String user_idcard) {

        postAreaInfo.setOpBy(user_idcard);
        postAreaInfo.setCreateTime(new Timestamp(new Date().getTime()));
        postAreaInfo.setUpdateTime(new Timestamp(new Date().getTime()));
        postAreaInfo= dao.insert(postAreaInfo);
        updatePostAreaInfo();
        return postAreaInfo;
    }

    /**
     * 更新
     *
     * @param postAreaInfo   对象信息
     * @param user_idcard 操作人
     * @return
     */
    public boolean update(PostAreaInfo postAreaInfo, String user_idcard) {
        postAreaInfo.setOpBy(user_idcard);
        postAreaInfo.setUpdateTime(new Timestamp(new Date().getTime()));
        if (dao.updateIgnoreNull(postAreaInfo) > 0){
            updatePostAreaInfo();
            return true;
        }else
            return false;
    }

    /**
     * 删除，实际标记delFlag为true
     *
     * @param ids
     * @return
     */
    public NutMap del(int[] ids) {
        NutMap nm = new NutMap();
        if (ids != null && ids.length > 0) {
            dao.update(PostAreaInfo.class, Chain.make("delFlag", true), Cnd.where("id", "in", ids));
            updatePostAreaInfo();
            nm.setv("success", true);
        } else {
            nm.setv("success", false).setv("errorMsg", "请重试！");
        }
        return nm;
    }

    /**
     * 获取对象
     *
     * @param id
     * @return
     */
    public PostAreaInfo getPostAreaInfo(int id) {
        return dao.fetch(PostAreaInfo.class, Cnd.where("id", "=", id));
    }

    /**
     * 更新岗位所在区域
     */
    public void updatePostAreaInfo(){
        CommonSet.PostAreaInfo = new ArrayList<>();
        List<PostAreaInfo> list = this.query();
        for(PostAreaInfo p : list){
            CommonSet.PostAreaInfo.add(p.getPost_area_name());
        }
    }
}
